/*
 * Modelo.h
 *
 *  Created on: 23/06/2012
 *      Author: natuchis
 */

#ifndef MODELO_H_
#define MODELO_H_

#include "Datos.h"

#include <string>
#include <set>
using namespace std;

class Modelo {

public:

	Modelo();
	virtual ~Modelo();
	virtual void actualizarModeloYExcluidos(string contexto, char carac, set<char> *excluidos) = 0;
	virtual void comprimir(string contexto, char carac, set<char> *excluidos, Datos &datos, bool estoyEnElEof) = 0;

	virtual bool existeCaracterEnEsteContexto(string contexto, char carac) = 0;

	virtual void agregarContexto(string contexto) = 0;
	virtual void agregarCaracter(char carac) = 0;

	virtual void actualizar(string contexto, char carac) = 0;

	/* Para Descompresion */

	virtual void getMapa(string contexto, map<string,Caracter> &mapa, set<char> *excluidos) = 0;
	virtual unsigned long int getFrecuenciaTotal(string contexto) = 0;
	virtual unsigned long int getFrecuenciaTotalExcluidos(string contexto, set<char> *excluidos) = 0;
	virtual unsigned long int getCantExcluidosPresentesEnModelo(string contexto,set<char> *excluidos) = 0;

	virtual unsigned long int getFrecuenciaEsc(string contexto) = 0;
	virtual void setExcluidos(string contexto, set<char> *excluidos) = 0;
};

#endif /* MODELO_H_ */
